﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Utilities;

namespace BusinessLogicLayer
{
    public class PhanQuyenManager
    {
        public ActionResult ThemPhanQuyen(int maNgDung)
        {
            List<string> ChucNang = new List<string>();
            ChucNang.Add("Quản lý mượn sách");
            ChucNang.Add("Quản lý hệ thống");
            ChucNang.Add("Quản lý sách");
            ChucNang.Add("Quản lý độc giả");
            ChucNang.Add("Quản lý NXB");
            ChucNang.Add("Quản lý thể loại");
            ChucNang.Add("Thống kê báo cáo");
            ChucNang.Add("Quản lý phạt");
            ChucNang.Add("Quản lý người dùng");
            ChucNang.Add("Quản lý tài khoản");
            var ar = new ActionResult();
            using (var db = new ThuVienDbContext())
            {
                try
                {
                    foreach (var item in ChucNang)
                    {
                        PhanQuyen pq = new PhanQuyen();
                        pq.MaNguoiDung = maNgDung;
                        pq.TenChucNang = item;
                        pq.KichHoat = false;
                        db.PhanQuyens.Add(pq);
                    }
                    db.SaveChanges();
                }
                catch (Exception ex)
                {
                    Logger.Write(ex);
                    ar.AddException(ex);
                }
            }
            return ar;
        }
        public ActionResult XoaPhanQuyen(int maNgDung)
        {
            var ar = new ActionResult();
            using (var db = new ThuVienDbContext())
            {
                try
                {
                    var list = db.PhanQuyens.Where(p => p.MaNguoiDung == maNgDung);
                    db.PhanQuyens.RemoveRange(list);
                    db.SaveChanges();
                }
                catch (Exception ex)
                {
                    Logger.Write(ex);
                    ar.AddException(ex);
                }
            }
            return ar;
        }
        public ActionResult CapNhatPhanQuyen(int maPhanQuyen, bool kichHoat)
        {
            ActionResult ar = new ActionResult();
            try
            {
                using (var db = new ThuVienDbContext())
                {
                    var pq = db.PhanQuyens.First(p => p.MaPhanQuyen == maPhanQuyen);
                    pq.KichHoat = kichHoat;
                    db.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
                ar.AddException(ex);
            }
            return ar;
        }
        public ActionResultAsList<PhanQuyen> TimTheoMaNguoiDung(int maNgDung)
        {
            var ar = new ActionResultAsList<PhanQuyen>();
            try
            {
                using (var db = new ThuVienDbContext())
                {
                    var list = db.PhanQuyens.Where(p => p.MaNguoiDung == maNgDung);
                    ar.ObjectList = list.ToList();
                }
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
                ar.AddException(ex);
            }
            return ar;
        }
    }
}
